Продолжаю потихоньку добавлять новые акции для анализа в портфель и наконец добрался до 100 штук. Собираюсь включить все акции с дневным оборотом более 1% от величины портфеля (осталось примерно 25 штук), после чего заняться ETF. Чем больше акций, тем больше обучающих примеров для тренировки градиентного бустинга и сетей — сейчас около 180 тысяч, а в перспективе их количество увеличится до 250-300 тысяч.
Потихоньку продолжаю заниматься сетями. Раньше жаловался, что они обучаются существенно медленней градиентного бустинга, но после профайлинга оказалось, что тормозит не обучение, а подготовка и загрузка данных. Переписал код — в результате сети стали учатся быстрее градиентного бустинга.
Плюсом сетей является возможность реализации множества выходов — на данный момент экспериментирую с прогнозированием доходности одновременно с СКО по аналогии с GluonTS.
Для поиска гиперпараметров для градиентного бустинга использую байесовскую оптимизацию с помощью hyperopt. Для сетей решил попробовать
Наконец дошли руки сделать работающий прототип на нейронных сетях — сразу же получился результат близкий к текущей используемой модели на основе градиентного бустинга. Учитывая, что в нейронные сети подавалась только часть информации по сравнению с той, которая используется для построения признаков для градиентного бустинга, и пара простых архитектур без всякой оптимизации, то есть все шансы в перспективе обойти градиентный бустинг. Из минусов — сетки обучаются в разы медленнее бустинга, но для моей инвестиционной стратегии это не принципиально.
Сходил недавно на семинар по эволюционному поиску нейросетевых архитектур — очень проникся темой. Пока останусь на градиентном бустинге, но буду двигаться в сторону сетей и эволюционного поиска их архитектур. В какой-то момент столкну бустинг и сети в эволюционном процессе, а там посмотрим, кто победит.
В последние время причесал некоторые блоки своей программки по управлению портфелем. Из последнего добавил в качестве фичи оборот и получил известную зависимость, что малоликвидные бумаги в среднем имеют большую доходность (по горизонтали натуральный логарифм дневного оборота, по вертикали ожидаемая доходность).
По большому счету дальше можно лишь потихоньку расширять перечень анализируемых бумаг и добавлять новые признаки, объясняющие доходность, но придумывать в рукопашную новые фичи не хочется, поэтом попробую переписать все на нейронных сетях и сырых котировках без всякой обработки.
В основном раньше имел дело с TF/Keras, но по ощущениям в последнее время подавляющая часть статей по сетям сопровождается кодом на PyTorch, поэтому решил изучить его и использовать в своей программе. В качестве обучения собираюсь принять участие в соревновании Кто поставит лайк без использования градиентного бустинга только с помощью PyTorch. Ну о потом приступить уже к использованию сеточек для прогнозирования доходности.